import { _decorator, Component, Node, sys } from 'cc';
import { awardCount, baseEnergy, baseHp, Card, epoch, EPOCH, LV, TASKTYPE, treasureBoxAward, Task } from '../AshFramework/Datas/GameConstant';
import { EventManager } from '../AshFramework/Managers/EventManager';
import Banner from '../Banner';
import { GameUtil } from './GameUtil';
const { ccclass, property } = _decorator;

@ccclass('GameManager')
export class GameManager extends Component {
    private static _instance: GameManager = null;
    public static get Instance(): GameManager {
        if (!GameManager._instance) {
            GameManager._instance = new GameManager();
        }
        return GameManager._instance;
    }

    public userData = {
        gold: 1111111110,//金币
        masonry: 0,//砖石
        epoch: EPOCH.EPOCH_1,//时代
        lv: LV.LV_1,//关卡
        weapon: [1, 0, 0],//拥有的武器 1 2 3代表类型 0表示还未拥有
        card: [],//拥有的卡牌 -- 增加属性
        energy: baseEnergy,//能量增长速度
        hp: baseHp.冷兵器时代,//玩家血量                 
        curEnergyPrice: 8,//当前能量价格
        curHpPrice: 8,//当前生命值价格
        AwardCount: 3,//商城奖励100砖石的次数
        refreshDate: 0,//上次刷新的日期
        timestampInMilliseconds: 0,//上次领取得时间戳
        drawCardGrade: 1,//抽卡等级
        drawCardEX: 0,//抽卡经验值 -- 是整数！
        curEpochProgress: epoch[0],//当前时代进度
        propertyAmplification: {
            "WEAPON_HARM": 0,
            "WEAPON_HP": 0,
            "ROLE_HP": 0,
            "FOOD": 0,
            "GOLD": 0,
        },
        //奖励是否已经领取
        treasureBoxAward: {
            "冷兵器时代": {
                "关卡 1": [false, false, false],
                "关卡 2": [false, false, false],
                "关卡 3": [false, false, false],
                "关卡 4": [false, false, false],
                "关卡 5": [false, false, false],
                "关卡 6": [false, false, false],
                "关卡 7": [false, false, false],
            },
            "热兵器时代": {
                "关卡 1": [false, false, false],
                "关卡 2": [false, false, false],
                "关卡 3": [false, false, false],
                "关卡 4": [false, false, false],
                "关卡 5": [false, false, false],
                "关卡 6": [false, false, false],
                "关卡 7": [false, false, false],
            },
            "工业时代": {
                "关卡 1": [false, false, false],
                "关卡 2": [false, false, false],
                "关卡 3": [false, false, false],
                "关卡 4": [false, false, false],
                "关卡 5": [false, false, false],
                "关卡 6": [false, false, false],
                "关卡 7": [false, false, false],
            },
            "重兵器时代": {
                "关卡 1": [false, false, false],
                "关卡 2": [false, false, false],
                "关卡 3": [false, false, false],
                "关卡 4": [false, false, false],
                "关卡 5": [false, false, false],
                "关卡 6": [false, false, false],
                "关卡 7": [false, false, false],
            },
            "核武器时代": {
                "关卡 1": [false, false, false],
                "关卡 2": [false, false, false],
                "关卡 3": [false, false, false],
                "关卡 4": [false, false, false],
                "关卡 5": [false, false, false],
                "关卡 6": [false, false, false],
                "关卡 7": [false, false, false],
            },
            "反物质时代": {
                "关卡 1": [false, false, false],
                "关卡 2": [false, false, false],
                "关卡 3": [false, false, false],
                "关卡 4": [false, false, false],
                "关卡 5": [false, false, false],
                "关卡 6": [false, false, false],
                "关卡 7": [false, false, false],
            },
        },
        //关卡内累计消灭的怪兽数量
        wipeOut: {
            "冷兵器时代": {
                "关卡 1": 0,
                "关卡 2": 0,
                "关卡 3": 0,
                "关卡 4": 0,
                "关卡 5": 0,
                "关卡 6": 0,
                "关卡 7": 0,
            },
            "热兵器时代": {
                "关卡 1": 0,
                "关卡 2": 0,
                "关卡 3": 0,
                "关卡 4": 0,
                "关卡 5": 0,
                "关卡 6": 0,
                "关卡 7": 0,
            },
            "工业时代": {
                "关卡 1": 0,
                "关卡 2": 0,
                "关卡 3": 0,
                "关卡 4": 0,
                "关卡 5": 0,
                "关卡 6": 0,
                "关卡 7": 0,
            },
            "重兵器时代": {
                "关卡 1": 0,
                "关卡 2": 0,
                "关卡 3": 0,
                "关卡 4": 0,
                "关卡 5": 0,
                "关卡 6": 0,
                "关卡 7": 0,
            },
            "核武器时代": {
                "关卡 1": 0,
                "关卡 2": 0,
                "关卡 3": 0,
                "关卡 4": 0,
                "关卡 5": 0,
                "关卡 6": 0,
                "关卡 7": 0,
            },
            "反物质时代": {
                "关卡 1": 0,
                "关卡 2": 0,
                "关卡 3": 0,
                "关卡 4": 0,
                "关卡 5": 0,
                "关卡 6": 0,
                "关卡 7": 0,
            },
        },
        //当天的任务数量
        taskNum: 1,
        task: {
            type: TASKTYPE.GOLD,
            label: "",
            curProgress: 0,
            totalProgress: 200,
        } as Task,
        // //任务进度
        // curProgress: 0,
        // //任务要求
        // totalProgress: 0,
    }

    private constructor() {
        super();
        sys.localStorage.setItem('userData', JSON.stringify(this.userData));
        const value = sys.localStorage.getItem('userData');
        if (value) {
            //有记录就读取  --- 没记录就存入数据
            this.userData = JSON.parse(value);
        } else {
            console.log(`userData is not exist`);
            sys.localStorage.setItem('userData', JSON.stringify(this.userData));
        }

        //更新奖励次数 --- 隔天刷新数据
        if (this.userData.refreshDate != new Date().getDate()) {
            this.userData.refreshDate = new Date().getDate();
            this.userData.AwardCount = awardCount;
            this.userData.taskNum = 1;
            this.userData.task = GameUtil.getTask(this.userData.lv, this.userData.taskNum);
        }


        EventManager.on(Banner.CB_BannerOnSize, this.OnSize)
    }

    OnSize(size) {
        console.log(size);
    }

    public saveData() {
        sys.localStorage.setItem('userData', JSON.stringify(this.userData));
    }

}


